<?php
namespace app\data_magic\model;

use think\Db;


/**
 * 单种节点树状图模型
 */
class TreeModel extends ListModel
{
    /**
     * 上级节点字段的名称
     */
    public $parentIdField="";
    /**
     * 获取节点下级的树状图
     * @param string|int $node_id 节点ID
     * @param string|int $layer 获取的层数,默认为0
     */
    public function getTree($node_id,$layer=0){

    }
    /**
     * 获取节点的下级节点
     * 返回的顺序是与当前节点更接近的节点在前
     * @param string|int $node_id 节点ID
     * @param string|int $layer 获取的层数,默认为1
     */
    public function getChildNode($node_id,$layer=1){
        $nodes=Db::table($this->tableName)->where("`$parentIdField` = $node_id")->select();
        $node_ids=[];
        foreach($nodes as $node){
            $node_ids[]=$node[$this->primaryKeyName];
        }
        $nodes=Db::table($this->tableName)->where("`$parentIdField` in (".implode(",",$node_ids).")")->select();
    }
    protected function getChildNodeRecursion($node_ids,$layer){
        
    }
    /**
     * 获取节点的上级节点
     * 返回的顺序是与当前节点更接近的节点在前
     * @param string|int $node_id 节点ID
     * @param string|int $layer 获取的层数,默认为1
     */
    public function getParentNode($node_id,$layer=1){

    }
}
